package com.scrcu.core.batch.bean;

import com.boarsoft.common.Util;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 批量定时任务
 */
@Setter
@Getter
public class BatchSchedule implements Serializable, Comparable<BatchSchedule> {

	private static final long serialVersionUID = -5970375344909539041L;

	/**
	 * 批量ID
	 */
	protected String id;

	/**
	 * 批量任务代码
	 */
	protected String code;

	/**
	 * 所属分组（业务群），对应服务的分组
	 */
	protected String catalog;

	/**
	 * 定时器执行对象
	 */
	protected String impl;

	/**
	 * 定时器描述
	 */
	protected String memo;

	/**
	 * 定时计划CRON表达式
	 */
	protected String cron;

	/**
	 * 定时计划开始时间
	 */
	protected String startTime;

	/**
	 * 定时计划终止时间
	 */
	protected String endTime;

	/**
	 * QuartzJob类
	 */
	protected String job;

	/**
	 * 下一次启动时间
	 */
	protected String nextFireTime;

	/**
	 * 上一次启动时间
	 */
	protected String previousFireTime;

	@Override
	public int compareTo(BatchSchedule o) {
		if (o == null) {
			return 1;
		}
		String nft = o.getNextFireTime();
		if (Util.strIsNotEmpty(nft) && Util.strIsNotEmpty(nextFireTime)) {
			return nft.compareToIgnoreCase(nextFireTime);
		}
		if (Util.strIsEmpty(nft) && Util.strIsNotEmpty(nextFireTime)) {
			return -1;
		}
		if (Util.strIsNotEmpty(nft) && Util.strIsEmpty(nextFireTime)) {
			return 1;
		}
		int r = catalog.compareTo(o.getCatalog());
		if (r == 0) {
			return code.compareTo(o.getCode());
		}
		return r;
	}

}
